package cn.distribution.receiptManager.mapper;


import cn.distribution.receiptManager.entity.dao.ReceiptDAO;
import cn.distribution.receiptManager.entity.vo.ReceiptVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 数据类
 * @author zhengminjie,xiayujia
 */
@Mapper
public interface ReceiptMapper extends BaseMapper<ReceiptDAO> {


    /**
     * 通过项目id得到office_id和office名
     * @param projectId 项目id
     * @return list
     */
    List<ReceiptVO> getIdName(@Param("projectId") Long projectId);

    /**
     * 通过项目id,officeId得到分发人数
     * @param officeId officeId
     * @param projectId 项目id
     * @return 数
     */
    Long sendCount(@Param("officeId") Long officeId, @Param("projectId") Long projectId);

    /**
     * 通过项目id,officeId得到未读人数
     * @param officeId officeId
     * @param projectId 项目id
     * @return 数
     */
    Long unReadCount(@Param("officeId") Long officeId, @Param("projectId") Long projectId);

    /**
     * 通过项目id,officeId得到同意人数
     * @param officeId officeId
     * @param projectId 项目id
     * @return 数
     */
    Long agreeCount(@Param("officeId") Long officeId, @Param("projectId") Long projectId);

    /**
     * 通过项目id,officeId得到拒绝人数
     * @param officeId officeId
     * @param projectId 项目id
     * @return 数
     */
    Long refuseCount(@Param("officeId") Long officeId, @Param("projectId") Long projectId);

    /**
     * 通过发送人id获取发件信息列表
     * @author xiayujia
     * @Param sendId 发送人id
     * @return 列表
     * */
    List<ReceiptVO> getDataList(@Param("sendId") Long sendId);

    /**
     * 通过关键词日期查找列表
     * @author xiayujia
     * @Param sendId 发送人id
     * @param officeName 表格或文件名称
     * @return 列表
     * */
    List<ReceiptVO> searchDataList(@Param("sendId") Long sendId, @Param("officeName") String officeName, @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获得收件信息列表
     * @author xiayujia
     * @Param receiptId 接收人id
     * @param officeName 表格或文件名称
     * @return 列表
     * */
    List<ReceiptVO> getReceiptList(@Param("receiptId") Long receiptId, @Param("officeName") String officeName, @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获得收件信息列表
     * @author xiayujia
     * @Param Id
     * */
    Long deleteOffice(@Param("Id") Long Id);
}
